www.gusucode.com > VC++ 宾馆管理系统(MSSQL) > VC++ 宾馆管理系统(MSSQL)/gusucode/Code/CheckOutDLG.cpp
//Download by http://www.NewXing.com // CheckOutDLG.cpp : implementation file #include "stdafx.h" #include "hotel_mis.h" #include "CheckOutDLG.h" #include "Hotel_MISView.h" #ifdef _DEBUG #define new DEBUG_NEW #undef THIS_FILE static char THIS_FILE[] = __FILE__; #endif ///////////////////////////////////////////////////////////////////////////// // CCheckOutDLG dialog CCheckOutDLG::CCheckOutDLG(CWnd* pParent /*=NULL*/) : CDialog(CCheckOutDLG::IDD, pParent) { //{{AFX_DATA_INIT(CCheckOutDLG) m_sDiscount = _T(""); m_sID = _T(""); m_sInDate = _T(""); m_sMemo = _T(""); m_sName = _T(""); m_tOutDate = COleDateTime::GetCurrentTime(); m_sPosition = _T(""); m_sPrice = _T(""); m_sRoomNo = _T(""); m_sType = _T(""); //}}AFX_DATA_INIT } void CCheckOutDLG::DoDataExchange(CDataExchange* pDX) { CDialog::DoDataExchange(pDX); //{{AFX_DATA_MAP(CCheckOutDLG) DDX_Text(pDX, IDD_CHECKOUT_DISCOUNT, m_sDiscount); DDX_Text(pDX, IDD_CHECKOUT_ID, m_sID); DDX_Text(pDX, IDD_CHECKOUT_INDATE, m_sInDate); DDX_Text(pDX, IDD_CHECKOUT_MEMO, m_sMemo); DDX_Text(pDX, IDD_CHECKOUT_NAME, m_sName); DDX_DateTimeCtrl(pDX, IDD_CHECKOUT_OUTDATE, m_tOutDate); DDX_Text(pDX, IDD_CHECKOUT_POSITION, m_sPosition); DDX_Text(pDX, IDD_CHECKOUT_PRICE, m_sPrice); DDX_CBString(pDX, IDD_CHECKOUT_ROOMNO, m_sRoomNo); DDX_Text(pDX, IDD_CHECKOUT_TYPE, m_sType); //}}AFX_DATA_MAP } BEGIN_MESSAGE_MAP(CCheckOutDLG, CDialog) //{{AFX_MSG_MAP(CCheckOutDLG) ON_CBN_SELCHANGE(IDD_CHECKOUT_ROOMNO, OnCheckoutRoomNoSelChange) //}}AFX_MSG_MAP END_MESSAGE_MAP() ///////////////////////////////////////////////////////////////////////////// // CCheckOutDLG message handlers BOOL CCheckOutDLG::OnInitDialog() { CDialog::OnInitDialog(); // TODO: Add extra initialization here _variant_t strQuery, Holder; if (m_bAppend)// Add CheckOut { CString sRoomNo; // Init Combobox strQuery = "select * from rooms where roomNO in\ ( \ select roomno from bookin where checkdate is NULL\ )"; theApp.ADOExecute(theApp.m_pADOSet, strQuery); int iCount = theApp.m_pADOSet->GetRecordCount(); theApp.m_pADOSet->MoveFirst(); for (int i=0; i<iCount; i++) { Holder = theApp.m_pADOSet->GetCollect("roomno"); ((CComboBox*)GetDlgItem(IDD_CHECKOUT_ROOMNO))->InsertString(i, Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder); if ( 0==i ) { sRoomNo = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder; // Get RoomType Holder = theApp.m_pADOSet->GetCollect("roomtype"); m_sType = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder; // Get roomposition Holder = theApp.m_pADOSet->GetCollect("roomposition"); m_sPosition = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder; // Get roomprice Holder = theApp.m_pADOSet->GetCollect("roomprice"); m_sPrice.Format("%.2f", Holder.dblVal); } theApp.m_pADOSet->MoveNext(); } ((CComboBox*)GetDlgItem(IDD_BOOKIN_ROOMNO))->SetCurSel(0); // Get customer info strQuery = "select * from bookin where roomno='"+sRoomNo+"'"; theApp.ADOExecute(theApp.m_pADOSet, strQuery); // Get name Holder = theApp.m_pADOSet->GetCollect("customname"); m_sName = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder; // Get ID Holder = theApp.m_pADOSet->GetCollect("customID"); m_sID = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder; // Get InDate COleDateTime time; Holder = theApp.m_pADOSet->GetCollect("indate"); time = Holder; m_sInDate = time.Format("%Y-%m-%d"); // Get ID Holder = theApp.m_pADOSet->GetCollect("discount"); m_sDiscount.Format("%.2f", Holder.vt==VT_NULL?0:Holder.dblVal); // Get Memo Holder = theApp.m_pADOSet->GetCollect("inmemo"); m_sMemo = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder; } else// Alter CheckOut { ((CComboBox*)GetDlgItem(IDD_CHECKOUT_ROOMNO))->InsertString(0, m_sRoomNo); // Get Room Info strQuery = "select * from rooms where roomNO='"+m_sRoomNo+"'"; theApp.ADOExecute(theApp.m_pADOSet, strQuery); int iCount = theApp.m_pADOSet->GetRecordCount(); theApp.m_pADOSet->MoveFirst(); // Get RoomType Holder = theApp.m_pADOSet->GetCollect("roomtype"); m_sType = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder; // Get roomposition Holder = theApp.m_pADOSet->GetCollect("roomposition"); m_sPosition = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder; // Get roomprice Holder = theApp.m_pADOSet->GetCollect("roomprice"); m_sPrice.Format("%.2f", Holder.dblVal); ((CComboBox*)GetDlgItem(IDD_BOOKIN_ROOMNO))->SetCurSel(0); } UpdateData(false); return TRUE; // return TRUE unless you set the focus to a control // EXCEPTION: OCX Property Pages should return FALSE } void CCheckOutDLG::OnCheckoutRoomNoSelChange() { // TODO: Add your control notification handler code here UpdateData(true); _variant_t strQuery, Holder; // Update room info strQuery = "select * from rooms where roomNO='"+m_sRoomNo+"'"; theApp.ADOExecute(theApp.m_pADOSet, strQuery); // Get RoomType Holder = theApp.m_pADOSet->GetCollect("roomtype"); m_sType = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder; // Get roomposition Holder = theApp.m_pADOSet->GetCollect("roomposition"); m_sPosition = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder; // Get roomprice Holder = theApp.m_pADOSet->GetCollect("roomprice"); m_sPrice.Format("%.2f", Holder.dblVal); // Update customer info strQuery = "select * from bookin where roomno='"+m_sRoomNo+"'"; theApp.ADOExecute(theApp.m_pADOSet, strQuery); // Get name Holder = theApp.m_pADOSet->GetCollect("customname"); m_sName = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder; // Get ID Holder = theApp.m_pADOSet->GetCollect("customID"); m_sID = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder; // Get InDate COleDateTime time; Holder = theApp.m_pADOSet->GetCollect("indate"); time = Holder; m_sInDate = time.Format("%Y-%m-%d"); // Get ID Holder = theApp.m_pADOSet->GetCollect("discount"); m_sDiscount.Format("%.2f", Holder.vt==VT_NULL?0:Holder.dblVal); // Get Memo Holder = theApp.m_pADOSet->GetCollect("inmemo"); m_sMemo = Holder.vt==VT_NULL?"":(char*)(_bstr_t)Holder; UpdateData(false); } void CCheckOutDLG::OnOK() { // TODO: Add extra validation here UpdateData(true); // Get InDate _variant_t strQuery, Holder; COleDateTime tInDate; strQuery = "select indate from bookin where roomno='"+m_sRoomNo+"'"; theApp.ADOExecute(theApp.m_pADOSet, strQuery); Holder = theApp.m_pADOSet->GetCollect("indate"); tInDate = Holder; if ( tInDate>m_tOutDate ) { AfxMessageBox(_T("结帐日期小于入住日期,请重新输入结帐日期!"), MB_ICONEXCLAMATION); return; } // Caculate Bill COleDateTimeSpan timeSpan; timeSpan = m_tOutDate - tInDate; int iDays = timeSpan.GetDays()+1; float fPrice = atof(m_sPrice); float fDiscount = atof(m_sDiscount); float fAmmount = fPrice*iDays*fDiscount/100; CString sAmmount; sAmmount.Format("%.2f", fAmmount); CString sTip = _T("金额为:"); sTip += sAmmount; sTip += _T(" 结算完毕!!"); AfxMessageBox(sTip, MB_ICONINFORMATION); // Update DataBase CString sOutDate; sOutDate = m_tOutDate.Format("%y-%m-%d"); strQuery = "update bookin set checkdate='"+sOutDate+"', ammount="+sAmmount+" where roomno='"+m_sRoomNo+"'"; theApp.ADOExecute(theApp.m_pADOSet, strQuery); // Refresh CheckOut List strQuery = "select * from bookin where checkdate is not NULL"; CHotel_MISView* p = (CHotel_MISView*)(((CMainFrame*)AfxGetMainWnd())->GetActiveView()); p->RefreshCheckOut(strQuery); CDialog::OnOK(); }